/*
 * Asteroide.cpp
 *
 *  Created on: Apr 5, 2012
 *      Author: gonzalo-Ramiro
 */

#include "Asteroide.h"
#include "../common/lib/SDL_rotozoom.h"
#include "../common/utils/SurfaceUtils.h"

Asteroide::Asteroide(DTOAsteroide* dto) :
		WidgetMovimiento(0, 0, dto->tipo->ancho,dto->tipo->alto,dto->tipo->imagen,NULL) {

	this->angle = dto->tipo->rotacion;
	this->direccion = dto->direccion;
	this->velocidad = dto->velocidad;
	this->tipo = new TipoAsteroide(dto->tipo);
}

DTOAsteroide* Asteroide::getDTO() {
	return new DTOAsteroide(tipo->getDTO(),parcel.posX,parcel.posY,direccion,velocidad);
}

void Asteroide::setParent(Widget* widget){
	//TODO posible memory leak
	this->parent = widget;
}

void Asteroide::handleEvent(Event event) {
	//NO hacen nada los elementos de juego aún;
}

Asteroide::Asteroide(TipoAsteroide* tipo,int x,int y,int direccion,
		int velocidad, Widget* parent,std::string imagePath) :
		WidgetMovimiento(x, y,imagePath, parent) {

	this->direccion = direccion;
	this->velocidad = velocidad;
	this->tipo->imagen = imagePath;
}

void Asteroide::resolve() {
	int avanceX, avanceY;

	float angleInRadians = direccion * (M_PI / 180.0);
	avanceY = (-1.0) * velocidad*sin(angleInRadians);
	avanceX = velocidad*cos(angleInRadians);

	parcel.posX += avanceX;
	parcel.posY += avanceY;
}

Asteroide::~Asteroide() {
}

